VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 1  'vbDataSource
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "Conexion"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Dim G_Cadena As String       ' variable para armar la cadena de conexion
Public Db As New ADODB.Connection



Private Sub Class_Initialize()

Dim fecha, Hora As Variant
On Error GoTo salida
    Db.Mode = adModeReadWrite
    
  
 Call ArmarCadena(G_Cadena)
   ' termina la aplicacion
If G_Cadena = "" Then
   End
End If

'***************************************************************************'
'     LA CONEXION SE SETEA CON UN ARCHIVO DE CONEXION LLAMADO CONEXION.INI  '
'     PUEDE HACERSE LOS 2 TIPOS DE CONEXION, OLEDB Y ODBC
'***************************************************************************'
    Db.ConnectionString = G_Cadena
    Db.Open
 

Exit Sub
salida:
    Call MsgBox("Error en la conexion con la base de datos, operacion abortada." & Err.Description, vbCritical, G_TituloGral)
    End
Exit Sub
End Sub

Public Function ejecutarQuery_recordSet(ByVal sql As String) As ADODB.Recordset
On Error GoTo salida
'esta funcion ejecuta la consulta que se le envia y retorna el o los conjuntos de registros
'apropiado para mostrar una lista de registros por pantalla
Dim rs As New ADODB.Recordset

rs.CursorLocation = adUseClient
'Msgbox sql
rs.Open sql, cn.Db, adOpenForwardOnly, adLockReadOnly
'este recordset tiene las siguientes caraceristicas: es solo de lectura (sirve para consultar)
'y permite movernos en todas las direcciones dentro del conj. de registros

'retorno el recordset
Set ejecutarQuery_recordSet = rs

Set rs = Nothing
Exit Function
salida:
        F_Error_ Err, sql
End Function

Private Sub class_Terminate()
On Error GoTo salida
    Db.Close
Exit Sub
salida:
End Sub

Public Function ejecutarQuery_boolean(consulta) As Boolean
On Error GoTo salida
   ' MsgBox consulta
    Db.Execute consulta
    ejecutarQuery_boolean = True
Exit Function
salida:
    ejecutarQuery_boolean = False
    F_Error_ Err, consulta & "(" & Err.Number & ")"
End Function

Public Function ejecutarQuery_maximoId(ByVal sql As String) As Variant
'esta funcion ejecuta la consulta que se le envia y retorna el maximo
'apropiado para insetar,
Dim rs As New ADODB.Recordset
rs.Open sql, cn.Db, adOpenForwardOnly, adLockReadOnly
'este recordset tiene las siguientes caraceristicas: es solo de lectura (sirve para consultar)
'y permite movernos en todas las direcciones dentro del conj. de registros

'retorno el maximo como elemento listo para insertar
If Not (rs.EOF And rs.BOF) And Not IsNull(rs!Maximo) Then
   ejecutarQuery_maximoId = rs!Maximo + 1
Else
   ejecutarQuery_maximoId = 1
End If
Set rs = Nothing

End Function

Private Function ArmarCadena(ByVal CadenaCon As String) As String
' funcion que arma la cadena de conexion levantando los datos
' de un archivo de texto plano

Dim Ruta As String
Dim numero As Integer
Dim linea As String
Dim tipo, Usuario, password, servidor, base, tipodebase, proveedor As String

Ruta = App.Path & "\conexion.ini"
If Dir(Ruta, vbArchive) = "" Then
   Call MsgBox("Falta el archivo de configuracion Conexion.ini", vbExclamation, G_TituloGral)
   CadenaCon = ""
   Exit Function
End If
numero = FreeFile
Open Ruta For Input As #numero
Do
   Line Input #numero, linea
   longuitud = Len(linea)
   Pos = InStr(1, linea, "=", vbTextCompare)
   If Pos > 0 Then
      nombreParametro = LCase(Mid(linea, 1, Pos - 1))
     parametro = Mid(linea, Pos + 1, longuitud)
    Select Case nombreParametro
  '      Case "servidor"
 '        servidor = parametro
      Case "proveedor"
         Cadena = parametro
    End Select
   End If
Loop Until EOF(numero)
Close #numero


'Ahora armo la cadena de conexion
'Access 97      -> Microsoft.Jet.OLEDB.3.51
'Access 2000    -> Microsoft.Jet.OLEDB.4.0
G_Cadena = Cadena
'Call MsgBox("------------>" & G_Cadena, vbCritical)
'G_Cadena = Cadena + ";Jet OLEDB:Database Password=zp32"
End Function


